
#ifndef MATRIX_H
#define MATRIX_H

#ifdef DEBUG

uint32_t Front[EDGE][EDGE]={
    {0xfdfe0ba1,0x02c55324,0x3e1637a6},
    {0x43846281,0xdf7502ce,0x51329f58},
    {0x7b33a8bb,0x6f7b9915,0x3dc4ee74}
};

uint32_t Behind[EDGE][EDGE]={
    {0xc96f3527,0x9a3b536d,0x051ef954},
    {0xdb8e3ef9,0x9967f311,0xeb1a8529},
    {0x9335d185,0xf5201fcd,0x715a634c}
};

uint32_t Left[EDGE][EDGE]={
    {0x18952236,0xc3df1016,0x9b009084},
    {0x98936ff0,0xdc9e8f3c,0x94c6bf5a},
    {0xbd7faf0f,0xc381e2cd,0x83bc3205}
};

uint32_t Right[EDGE][EDGE]={
    {0x3372486a,0x1aef5581,0x22b35be4},
    {0x80f07b8d,0xfe32ed8f,0x91fb13ab},
    {0xfb9ca491,0xad254c2e,0xedd9d6d1}
};

uint32_t Up[EDGE][EDGE]={
    {0x9cf903a1,0xf54c810c,0x591685ae},
    {0xa9b44eaf,0x19382448,0x259911b0},
    {0xb9cc1351,0xfe217f1c,0x9b555a08}
};

uint32_t Down[EDGE][EDGE]={
    {0xbc1220f9,0x4550e6ae,0x5f2f456e},
    {0x9b0b7b06,0xfb5a012f,0xfadb2b18},
    {0xfb67fe21,0x9a915052,0xf49ad883}
};


#else
uint32_t Front[EDGE][EDGE]={
    {0xfdfe0ba1, 0x9a915052, 0xc96f3527},
    {0xf5201fcd, 0xfe32ed8f, 0xdb8e3ef9},
    {0x051ef954, 0xfe217f1c, 0x7b33a8bb},
};
uint32_t Behind[EDGE][EDGE]={
    {0x9cf903a1, 0xc381e2cd, 0x22b35be4},
    {0x4550e6ae, 0xdc9e8f3c, 0xa9b44eaf},
    {0x3372486a, 0x51329f58, 0x5f2f456e},
};
uint32_t Left[EDGE][EDGE]={
    {0x9b555a08, 0xeb1a8529, 0x9b009084},
    {0x9b0b7b06, 0x9967f311, 0x91fb13ab},
    {0x18952236, 0x6f7b9915, 0xedd9d6d1},
};
uint32_t Right[EDGE][EDGE]={
    {0xfb67fe21, 0x259911b0, 0x3dc4ee74},
    {0x98936ff0, 0xdf7502ce, 0xc3df1016},
    {0xbc1220f9, 0xf54c810c, 0x715a634c},
};
uint32_t Up[EDGE][EDGE]={
    {0x3e1637a6, 0x80f07b8d, 0xfb9ca491},
    {0xad254c2e, 0xfb5a012f, 0x1aef5581},
    {0xb9cc1351, 0x9a3b536d, 0xbd7faf0f},
};
uint32_t Down[EDGE][EDGE]={
    {0xf49ad883, 0x02c55324, 0x83bc3205},
    {0x43846281, 0x19382448, 0xfadb2b18},
    {0x9335d185, 0x94c6bf5a, 0x591685ae},
};
#endif

uint32_t Front_s[EDGE][EDGE]={
    {0xb849cd19,0x55e00017,0x0844966b},
    {0x80c181ec,0x686c0b3c,0x55400592},
    {0xcd42168a,0x04039e81,0xd9de549f}
};

uint32_t Behind_s[EDGE][EDGE]={
    {0x2034677d,0x00144abd,0x49100d00},
    {0xe003a0e0,0x80f0006d,0x8307add6},
    {0x4cf60781,0xa0352643,0xc580c3de}
};

uint32_t Left_s[EDGE][EDGE]={
    {0xea8c4e24,0x68603008,0x687fbfff},
    {0x19de4bf9,0x271a1179,0x99791c4d},
    {0x029cbffc,0x2b82801e,0x3c0307fb}
};

uint32_t Right_s[EDGE][EDGE]={
    {0xdae61cd6,0x8f7b1bf0,0xc56cef1d},
    {0xd6493a96,0x01808018,0xf48001b9},
    {0x03712519,0x9294f318,0x6de20384}
};

uint32_t Up_s[EDGE][EDGE]={
    {0xf3750b04,0x256a122a,0x0257290b},
    {0xc4582056,0x204e8bc0,0x79c7ade7},
    {0xc4c20203,0x5b961570,0x66034856}
};

uint32_t Down_s[EDGE][EDGE]={
    {0x78329e3a,0x01d07c00,0x4ac240e6},
    {0x854cfbbe,0xabfec404,0x5bd80037},
    {0xe94cbcd8,0x00000001,0xc4ca280d}
};

uint32_t surfaces_m[6][2]={
    {0xd481dd44,0xe66cf0e0},
    {0x6c86565d,0xef6c2a6d},
    {0xd170230a,0x9159b169},
    {0x3dcf0d3f,0xd9331e76},
    {0x64691af0,0xdbf384cf},
    {0x069e3e3a,0x7122de4d}
};  




typedef uint32_t (*uPtr)[EDGE];

uPtr surfaces[]={
    Front,Behind,Left,Right,Up,Down
};
uPtr surfaces_s[]={
    Front_s,Behind_s,Left_s,Right_s,Up_s,Down_s
};

#endif
